package com.fjl.gson.test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

import sun.security.util.ObjectIdentifier;

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

/**
 * gson使用测试
 * @author admin
 *
 */
public class ListToJson
{
	public static void main(String[] args)
	{
		listToJson3();
	}

	/**
	 * 对象数组转json数组
	 * 
	 * @return
	 */
	public static String listToJson1()
	{
		String result;

		List<Person> personLst = new ArrayList<>();
		personLst.add(new Person("1", "one"));
		personLst.add(new Person("2", "two"));
		personLst.add(new Person("3", "three"));

		//把集合对象转换成Json字符串
		Gson gson = new Gson();
		result = gson.toJson(personLst);
		System.out.println(result);

		// result = JSONArray.fromObject(geoStrs).toString();
		return result;
	}

	/**
	 * 对象数组转json数组
	 * 
	 * @return
	 */
	public static String listToJson2()
	{
		String result;

		List<String> personLst = new ArrayList<>();
		personLst.add("1");
		personLst.add("2");
		personLst.add("3");

		Gson gson = new Gson();
		result = gson.toJson(personLst);
		System.out.println(result);

		// result = JSONArray.fromObject(geoStrs).toString();
		return result;
	}

	/**
	 * str[]转json数组
	 * 
	 * @return
	 */
	public static String listToJson3()
	{
		String str = "[{ y: 55.11, color : colors[0] },{ y: 21.63, color: colors[1] },{ y: 11.94,color: colors[2] },{ y: 117.15, color: colors[3] }]";
		System.out.println(str);

		Gson gson = new Gson();
		//创建一个JsonParser
		JsonParser parser = new JsonParser();
		//通过JsonParser对象可以把json格式的字符串解析成一个JsonElement对象
		JsonElement el = parser.parse(str);
		//把JsonElement对象转换成JsonObject
		JsonObject jsonObj = null;
		if(el.isJsonObject()){
		jsonObj = el.getAsJsonObject();  
		}
		
		
		//把JsonElement对象转换成JsonArray
		JsonArray jsonArray = null;
		if(el.isJsonArray()){
		jsonArray = el.getAsJsonArray();
		}
		
		
		//遍历JsonArray对象
		Person field = null;
		Iterator it = jsonArray.iterator();
		while(it.hasNext()){
		JsonElement e = (JsonElement)it.next();
		//JsonElement转换为JavaBean对象
		field = gson.fromJson(e, Person.class);
		System.out.println(field.getName()+" === "+field.getAge());
		
		
	}
		return str;
	}

	/**
	 * 使用json-simple-1.1.1.jar 把字符串解析成json对象数组
	 */
	public static void strToJson()
	{
		JSONArray array = new JSONArray();

		JSONObject object1 = new JSONObject();
		object1.put("aaa", "111");
		object1.put("bbb", "222");
		array.add(object1);
		
		
		System.out.println(object1.toJSONString());
		System.out.println(array.toJSONString());
	}
}
